
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     * 将给定数组排序
     * @param arr int整型vector 待排序的数组
     * @return int整型vector
     */
    //快速排序
    int partition(vector<int>& arr, int l, int r){
        int x = arr[l];
        while(l < r){
            while(l < r && arr[r] >= x){
                r--;
            }
            arr[l] = arr[r];
            while (l < r && arr[l] < x) {
                l++;
            }
            arr[r] = arr[l];
        }
        arr[l] = x;
        return l;
    }
    void quicksort(vector<int>& arr, int l, int r){
        if(l < r){
            int mid = partition(arr, l, r);
            quicksort(arr, l, mid - 1);
            quicksort(arr, mid + 1, r);
        }
    }
    vector<int> MySort(vector<int>& arr) {
        // write code here
        int n = arr.size() - 1;
        quicksort(arr, 0, n);
        return arr;
    }
};